using Tools.Domain.Common.StateMachine;
using Web.App.Infrastructure.Mail.Contracts;
using Webshop20.AntiCorruptionLayers.Quartz.Services.Contracts;
using Webshop20.Domain.Orders.Services.Contracts;
using Webshop20.Domain.Orders.Translations;

namespace Webshop20.Domain.Orders.Processes.Events
{
    public class PassedToCarrierEvent : IStateEvent 
    {
        private readonly IMailService mailService;
        private readonly ITemplateService templateService;
        private readonly INotificationMailTranslator notificationMailTranslator;
        private readonly ISchedulingService schedulingService;

        public PassedToCarrierEvent(
                                        INotificationMailTranslator notificationMailTranslator, 
                                        ITemplateService templateService, 
                                        IMailService mailService, 
                                        ISchedulingService schedulingService
                                    )
        {
            this.notificationMailTranslator = notificationMailTranslator;
            this.schedulingService = schedulingService;
            this.mailService = mailService;
            this.templateService = templateService;
        }

        public ISchedulingService CalendarService
        {
            get { return schedulingService; }
        }

        public INotificationMailTranslator NotificationMailTranslator
        {
            get { return notificationMailTranslator; }
        }

        public ITemplateService TemplateService
        {
            get { return templateService; }
        }

        public IMailService MailService
        {
            get { return mailService; }
        }
    }
}